﻿#define _CRT_SECURE_NO_WARNINGS 1
//#include  <iostream>  //c++的头文件
//using namespace std;    //把std整合的头函数给放开

//int main()
//{
//	cout << "hello world\n" << endl;
//	return 0;
//}

//using namespace std;
//
//int main()
//{
//	cout << "hello world\n" << endl;
//	std::cout << "gogogogo\n" << std::endl;
//	return 0;
//}

#include <stdio.h>
#include <stdlib.h>
#include <iostream>

//namespace wkg
//{
//	int rand = 10;
//}
//
//
//int main()
//{
//	printf("%d \n", wkg::rand);
//	printf("%p ", rand);
//
//	return 0;
//}

//namespace wkg
//{
//	int rand = 10;
//	int add(int left, int right)
//	{
//		return  left + right;
//	}
//
//	struct node
//	{
//		int data;
//		struct node* next;
//	};
//}

//namespace wkg
//{
//	namespace pg
//	{
//		int rand = 1;
//		int add(int left, int right)
//		{
//			return  left + right;
//		}
//	}
//	namespace hg
//	{
//		int rand = 2;
//		int add(int left, int right)
//		{
//			return (left + right)*10;
//		}
//
//	}
//
//}
//
//
//int main()
//{
//	//printf("%d\n", rand);
//	//printf("%d\n", wkg::rand);
//	
//	printf("%d\n", wkg::pg::rand);
//	printf("%d\n", wkg::hg::rand);
//
//	printf("%d\n", wkg::pg::add(1,2));
//	printf("%d\n", wkg::hg::add(1, 2));
//
//	return 0;
//}

//全局定义了⼀份单独的Stack
//typedef struct Stack
//{
//	int a[10];
//	int top;
//}ST;
//void STInit(ST* ps) {}
//void STPush(ST* ps, int x) {}
//
//#include"Stack.h"
//int main()
//{
//	bit::ST st1;
//	//ST st1;
//	bit::STInit(&st1);
//	return 0;
//}]


//namespace wkg
//{
//	int a = 1;
//	int b = 20;
//}
//using namespace wkg;  //展开命名空间的全部成员
//using wkg::b;  //展开命名空间中的某些成员
//
//int main()
//{
//	//printf("%d\n", wkg::a);
//	//printf("%d\n", wkg::b);
//	printf("%d\n", wkg::a);
//	printf("%d\n", b);
//	//printf("%d\n", a);
//	//printf("%d\n", b);
//	return 0;
//}

using namespace std;

//int main()
//{
//	int a = 0;
//	double b = 0.1;
//	char c = 'x';
//	std::cout << a << " " << b << " " << c << std::endl;
//
//	cin >> a >> b >> c;  //输入
//	cout << a << " " << b << " " << c << endl;  //输出
//
//	int
//
//	return 0;
//}

//int main()
//{
//	int a = 10;
//	int b = 10;
//	double c = 3.45;
//	double d = 12.43;
//	cout << a << endl << b << endl << c << endl << d << endl;   //endl是换行符
//	cout << b;
//	return  0;
//}


//int main()
//{
//	ios_base::sync_with_stdio(false);
//	cin.tie(nullptr);
//	cout.tie(nullptr);
//
//	return 0;
//}


//缺省参数
//void func(int a = 12)
//{
//	cout << a << endl;
//}
//
//void func1(int a = 20, int b = 30, int c = 40)
//{
//	cout << a << endl;
//	cout << b << endl;
//	cout << c << endl;
//}
//
//int main()
//{
//	func();
//	func(100);
//	printf("三个：\n");
//	func1(100,200,300);
//	printf("两个：\n");
//	func1(100,200);
//	printf("一个：\n");
//	func1(100);
//	func1(,,300);  //这样是错误的
//	return 0;
//}
//#include"Stack.h"
//
//using namespace bit;
//using namespace std;
//int main()
//{
//	ST st;
//	STInit(&st);
//	STInit(&st,100);
//	for (int i = 0; i < 100; i++)
//	{
//		STPush(&st, i);
//	}
//	return 0;
//}

//1、参数不相同
//void func(int a, int b)
//{
//	cout << a << endl;
//	cout << b << endl;
//}
//
//void func(double a, double b)
//{
//	cout << a << endl;
//	cout << b << endl;
//}
//
////2、参数个数不相同
//void func()
//{
//	cout << 12 << endl;
//}
//
//void func(int a)
//{
//	cout << 99 << endl;
//}
//
//void func(char x, char y)
//{
//	cout << x << endl;
//	cout << y << endl;
//}
//
//void func(int a, char b)
//{
//	cout << a << endl;
//	cout << b << endl;
//}
//
//void func(char a, int b)
//{
//	cout << a << endl;
//	cout << b << endl;
//}
//
//int main()
//{
//	func(12,32);
//	printf("\n");
//	func(12.32, 3.14);
//	printf("\n");
//	func();
//	printf("\n");
//	func(12);
//	printf("\n");
//	func('a', 'b');
//	printf("\n");
//	func(10, 'a');
//	func('b', 99);
//	return 0;
//}


//int main()
//{
//	int a = 20;
//	int& b = a;
//	int& c = a;
//	int& d = b;
//	b = 40;
//	return 0;
//}

//void test(int& rx, int& ry)
//{
//	int tmp = rx;
//	rx = ry;
//	ry = tmp;
//}
//
//int main()
//{
//	int x = 0;
//	int y = 1;
//	cout << x << " " << y << endl;
//
//	test(x, y);
//	cout << x << " " << y << endl;
//	return 0;
//}
//#include"Stack.h"
//
//using namespace bit;
//
//int main()
//{
//	ST st;
//	STInit(st);
//	STPush(st, 1);
//	STPush(st, 2);
//	STPush(st, 3);
//
//	
//	return 0;
//}


#include<iostream>
using namespace std;
typedef struct SeqList
{
	int a[10];
	int size;
}SLT;
// ⼀些主要⽤C代码实现版本数据结构教材中，使⽤C++引⽤替代指针传参，⽬的是简化程序，避开复杂的指针，但是很多同学没学过引⽤，导致⼀头雾⽔。
void SeqPushBack(SLT& sl, int x)
{}
typedef struct ListNode
{
	int val;
	struct ListNode* next;
}LTNode, * PNode;
// 指针变量也可以取别名，这⾥LTNode*& phead就是给指针变量取别名
// 这样就不需要⽤⼆级指针了，相对⽽⾔简化了程序
//void ListPushBack(LTNode** phead, int x)
//void ListPushBack(LTNode*& phead, int x)
void ListPushBack(PNode& phead, int x)
{
	PNode newnode = (PNode)malloc(sizeof(LTNode));
	newnode->val = x;
	newnode->next = NULL;
	if (phead == NULL)
	{
		phead = newnode;
	} else
	{
		//...
	}
}